package com.ruoyi.mushcoin.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.mybatisflex.annotation.Column;
import com.ruoyi.mushcoin.domain.TgUserLoginLog;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * TG游戏登录日志业务对象 tg_user_login_log
 *
 * @author billy
 * @date 2024-10-18
 */
@Data
@AutoMapper(target = TgUserLoginLog.class, reverseConvertGenerate = false)
public class TgUserLoginLogBo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    @NotNull(message = "不能为空")
    private Long id;

    /**
     *
     */
    @NotNull(message = "不能为空")
    private Long userId;

    /**
     *
     */
    @NotBlank(message = "不能为空")
    private String firstName;

    /**
     *
     */
    @NotBlank(message = "不能为空")
    private String lastName;

    /**
     *
     */
    @NotBlank(message = "不能为空")
    private String userName;

    /**
     *
     */
    @NotNull(message = "不能为空")
    private Integer isPremium;

    /**
     * 游戏mush
     */
    @NotNull(message = "游戏mush不能为空")
    private BigDecimal mushcoin;

    /**
     * H5推广mush
     */
    @NotNull(message = "H5推广mush不能为空")
    private BigDecimal inviteRewardsTotal;

    /**
     * 存档次数
     */
    @NotNull(message = "存档次数不能为空")
    private Long saveGameCount;

    /**
     * 1金币
     */
    @NotNull(message = "1金币不能为空")
    private BigDecimal gold;

    /**
     * 2钻石
     */
    @NotNull(message = "2钻石不能为空")
    private BigDecimal diamond;

    /**
     * 201硬币
     */
    @NotNull(message = "201硬币不能为空")
    private BigDecimal rankCoin;

    /**
     * IP地址
     */
    @NotBlank(message = "IP地址不能为空")
    private String ipAddress;

    /**
     * IP地址解析
     */
    @NotBlank(message = "IP地址解析不能为空")
    private String ipAddressName;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @Column(ignore = true)
    private Map<String, Object> params = new HashMap<>();


}
